﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using SisCRA.Classes;
using SisCRA.Database;

namespace SisCRA.Business
{
    public class DisciplineBLL
    {
        #region -Public Methods-

        /// <summary>
        /// Método que chama a camada de dados para salvar uma disciplina. 
        /// Caso a disciplina já exista chama o método de Update, senão chama o método de Insert.
        /// </summary>
        /// <param name="discipline">Objeto Disciplina</param>
        public void SaveDiscipline(Discipline discipline)
        {
            try
            {
                DisciplineDAL disciplineDAL = new DisciplineDAL();

                if (discipline.Id > 0)
                {
                    disciplineDAL.UpdateDiscipline(discipline.Id, discipline.Code.ToUpper(), discipline.Name.ToUpper(), discipline.MaxFaults);
                }
                else
                {
                    disciplineDAL.InsertDiscipline(discipline.Code.ToUpper(), discipline.Name.ToUpper(), discipline.MaxFaults);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Método que chama a camada de dados para buscar disciplina(s) pelos parêmetros passados.
        /// </summary>
        /// <param name="student">Objeto Disciplina</param>
        /// <returns>DataTable contendo a busca realizada</returns>
        public DataTable GetDisciplineByParam(Discipline discipline)
        {
            try
            {
                DisciplineDAL disciplineDAL = new DisciplineDAL();

                if (discipline.Id > 0)
                {
                    return disciplineDAL.GetDisciplineById(discipline.Id);
                }
                else if (!string.IsNullOrWhiteSpace(discipline.Code))
                {
                    return disciplineDAL.GetDisciplineByCode(discipline.Code);
                }
                else if (!string.IsNullOrWhiteSpace(discipline.Name))
                {
                    return disciplineDAL.GetDisciplineByName(discipline.Name);
                }
                else
                {
                    return disciplineDAL.GetAll();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        /// <summary>
        /// Método que chama a camada de dados para buscar todas as disciplinas.
        /// </summary>
        /// <returns>DataTable contendo a busca realizada</returns>
        public DataTable GetAllDiscipline()
        {
            try
            {
                DisciplineDAL disciplineDAL = new DisciplineDAL();
                return disciplineDAL.GetAll();
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        #endregion
    }
}
